Software testing is an investigation conducted to check functionality of a Software Under Test (SUT). Test techniques include, but are not limited to, the process of executing a program or application with the intent of finding software bugs (errors or other defects).
There may be limited resources to running the tests, such as for example, processors that can be used, memory allocated for testing, time allotted to performing the tests, or the like. Some testing techniques attempt to optimize a test suite before executing it, such as by developing specific tests that are designed to test a particular aspect of the SUT.
One other manner of test planning is concerned with selection of subset of tests from a given test base. The subset is selected to provide for the same coverage as the test base but with a smaller number of tests. If such a subset is desired, it may be decided that some tests (i.e., tests not in the subset) will not be performed without reducing the coverage achieved in the testing phase.